/**
 * 时间单位字符串名称常量对象
 */
export const TimeUnit = {
  millisecond: 'millisecond',
  second: 'second',
  minute: 'minute',
  hour: 'hour',
  day: 'day'
} as const;

/**
 * 时间单位类型
 */
export type TimeUnitType = typeof TimeUnit[keyof typeof TimeUnit];

/**
 * 时间单位转换
 *
 * @param {number} time 时间值
 * @param {TimeUnit} fromUnit 源单位
 * @param {TimeUnit} toUnit 目标单位，默认为秒
 * @returns {number} 目标单位的时间值
 */
export const convert = (time: number, fromUnit: TimeUnitType, toUnit: TimeUnitType = TimeUnit.second): number => {
  const conversionRates: { [key: string]: number } = {
    'millisecond': 0.001,
    'second': 1,
    'minute': 60,
    'hour': 3600,
    'day': 86400
  };
  // 将输入值转换为秒
  const timeInSeconds = time * conversionRates[fromUnit];
  // 将秒转换为目标单位
  return timeInSeconds / conversionRates[toUnit];
}
